package cn.liuhuan1.blogsModel.service;

import cn.liuhuan1.blogsModel.dao.WebListDao;
import cn.liuhuan1.entity.PageResult;
import cn.liuhuan1.webModelBean.api.WebListImp;
import cn.liuhuan1.webModelBean.bo.WebListBo;
import cn.liuhuan1.webModelBean.vo.WebListVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;
import java.util.List;

/**
 * @Auther: liuhuan
 * @Date: 2021/2/22 - 02 - 22 - 16:02
 * @Description:
 * @version: 1.0
 */
@Service
public class WebListService implements WebListImp {
    @Autowired
    public WebListDao webListDao;

    @Override
    public List<WebListVo> getWebList(){
        List<WebListVo> webListVos = webListDao.getWebList();
        return webListVos;
    }

    @Override
    public PageResult<WebListVo> getPageWebList(WebListBo webListBo) {

        if(webListBo.getPageCurrent() < 1){
            webListBo.setPageCurrent(0);
        }else{
            webListBo.setPageCurrent(webListBo.getPageCurrent() - 1);
        }
        if(webListBo.getPageSize() < 9){
            webListBo.setPageCurrent(10);
        }

        PageResult<WebListVo> pageResult = new PageResult<>();

        List<WebListVo> webListVoList = webListDao.getPageWebList(webListBo);

        int count = webListDao.getPageCount(webListBo);

        pageResult.setPageList(webListVoList);

        pageResult.setPageShowTotal(count);
        pageResult.setPageCurrent(webListBo.getPageCurrent());
        pageResult.setPageSize(webListBo.getPageSize());
        return pageResult;
    }

    @Override
    @Transactional(rollbackFor = Exception.class)
    public void delWebList(String id) {
        if(id != null && id.trim() != ""){
            webListDao.delWebList(id);
        }else{
            throw new NullPointerException();
        }
    }

    @Override
    @Transactional(rollbackFor = Exception.class)
    public void saveWebList(WebListBo webListBo) {
        if(webListBo.getName() !=null && webListBo.getName().trim() != "" &&
        webListBo.getUrl() != null && webListBo.getUrl().trim() != ""){
            webListBo.setStartTime(new Date());
            webListBo.setWebListId("0");
            webListDao.saveWebList(webListBo);
        }else {
            throw new NullPointerException();
        }
    }

    @Override
    public WebListVo getWebListById(String id) {
        if(id != null && id.trim() != ""){
            WebListVo webListVo = webListDao.getWebListById(id);
            if(webListVo != null){
                return webListVo;
            }
        }
        throw new NullPointerException();
    }

    @Override
    public void updateWebList(WebListBo webListBo) {
        if(webListBo.getName() !=null && webListBo.getName().trim() != "" &&
                webListBo.getUrl() != null && webListBo.getUrl().trim() != ""&&
            webListBo.getId() != null && webListBo.getId().trim() != ""){
                webListDao.updateWebList(webListBo);
        }else {
            throw new NullPointerException();
        }
    }

    @Override
    public List<WebListVo> getWebUrlList() {
        List<WebListVo> webUrlList = webListDao.getWebUrlList();
        return webUrlList;
    }
}
